<?php
ini_set("display_errors", "On");
error_reporting(E_ALL | E_STRICT);
if (isset($_POST['op']) &&  !empty($_POST['op']) ){
    include 'load.php';
    $openid=addslashes($_POST['op']);
    if (isset($_POST['code']) ){
        $openid=$_POST['op'];
        $code=$_POST['code'];
        $iv=$_POST['iv'];
        $encryptedData=$_POST['encryptedData'];
    }else{
        exit;
    }
    include_once "wxBizDataCrypt.php";
    $getSession = getSessionKey($code,$appId,$secret);
    $sessionKey=$getSession['session_key'];
    $pc = new WXBizDataCrypt($appId, $sessionKey);
    $errCode = $pc->decryptData($encryptedData, $iv, $data);
    $getData=json_decode($data,true);
    if (isset($getData['unionId'])){
        $mysqli = new mysqli($dbhost, $dbuser, $dbpwd, $dbName);
        $mysqli->query("update users set unionid='".$getData['unionId']."' where openid='".$openid."'   "); 
        $mysqli->close();
        echo json_encode(array('u'=>$getData['unionId']));
    }else{
        echo json_encode(array('u'=>''));
    }
}


function getSessionKey($code,$appId,$secret) {
    $url = "https://api.weixin.qq.com/sns/jscode2session?appid=".$appId."&secret=".$secret."&js_code=".$code."&grant_type=authorization_code";
    
    $res = httpRequest($url,'');
    $result = json_decode($res, true);
   
    return $result;
}

/**
 *CRUL 网络请求
 */
function httpRequest($url,$data){ // 模拟提交数据函数
    $curl = curl_init(); // 启动一个CURL会话
    curl_setopt($curl, CURLOPT_URL, $url);                         // 要访问的地址
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);          // 对认证证书来源的检查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);          // 从证书中检查SSL加密算法是否存在
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);          // 使用自动跳转
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1);             // 自动设置Referer
    curl_setopt($curl, CURLOPT_POST, 1);                    // 发送一个常规的Post请求
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);                 // Post提交的数据包
    curl_setopt($curl, CURLOPT_TIMEOUT, 30);                // 设置超时限制防止死循环
    curl_setopt($curl, CURLOPT_HEADER, 0);                  // 显示返回的Header区域内容
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);          // 获取的信息以文件流的形式返回
    $tmpInfo = curl_exec($curl); // 执行操作
    
    if (curl_errno($curl)) {
        echo 'Errno'.curl_error($curl);//捕抓异常
    }
    curl_close($curl); // 关闭CURL会话
    return $tmpInfo; // 返回数据
}